/*!
\copyright  Copyright (c) 2025 Qualcomm Technologies International, Ltd.
			All Rights Reserved.
			Qualcomm Technologies International, Ltd. Confidential and Proprietary.
\file
\defgroup   downloadable Downloadable
\ingroup    audio_domain
\brief      Support for downloadable capabilities that doesn't have dkcs headers.
 
The purpose of this library is to manage the creation and destruction of operators.
It sits on top of the operators library and manages any DSP capability bundle file load/unload required.
Note that downloadable capability will always be used even if built-in capability does exist.

*/

#ifndef DOWNLOADABLE_PROTECTED_H_
#define DOWNLOADABLE_PROTECTED_H_


/*!@{*/

#include <operators.h>

/*!
  @brief Creates the operator loads DSP capability bundle files as required.

  @param module_id GSL module_id that must match to downloadable capability id.
  @param priority  Priority of the created operator.

  @return Operator created.
*/
Operator Downloadable_CreateOperator(uint32 module_id, operator_priority_t priority);

/*!
  @brief Destroys the operator passed as input and unloads DSP capability file as required.
         The operator must be stopped before they can be destroyed.

  @param operators Operator to be destroyed.
*/
void Downloadable_DestroyOperator(Operator operator);

/*!@}*/

#ifdef HOSTED_TEST_ENVIRONMENT
/* Used to reset the state of the lists */
void Downloadable_TestReset(void);
#endif

#endif /* DOWNLOADABLE_PROTECTED_H_ */
